package br.com.main.client.system.botoes;

import java.util.ArrayList;
import java.util.List;

import br.com.main.client.system.botoes.AreaLazerPresenter.Display;
import br.com.main.client.system.botoes.FinanceiroView.Financas;

import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SingleSelectionModel;

public class AreaLazerView extends Composite implements Display{

	
	private HorizontalPanel panelMain;
	private VerticalPanel panelLeft;
	private VerticalPanel panelRight;
	private TextBox tbPesquisar;
	private List<Lazer> lazerList;

	private CellTable<Lazer> tabela;
	private SingleSelectionModel<Lazer> selectionModel;
	private Label lbNovaArea;

	private VerticalPanel panelCadastroMorador;
	private TextBox tbNome;
	private TextBox tbCapacidade;
	private TextBox tbTempo;
	private HorizontalPanel pnBotoes;
	private Button btCancel;
	private Button btCadastrar;
	private Button btExcluir;



	public AreaLazerView() {
		init();
		initWidget(panelMain);
		enabledOrDesenable(false);
	}
	
	public static class Lazer {
		private String capacidade;
		private String tempoMaximo;
		public String getCapacidade() {
			return capacidade;
		}

		public void setCapacidade(String capacidade) {
			this.capacidade = capacidade;
		}

		public String getTempoMaximo() {
			return tempoMaximo;
		}

		public void setTempoMaximo(String tempoMaximo) {
			this.tempoMaximo = tempoMaximo;
		}

		public String getNome() {
			return nome;
		}

		public void setNome(String nome) {
			this.nome = nome;
		}

		private String nome;
		
		public Lazer(String capacidade, String tempo_maximo,
				String nome) {
			super();
			this.capacidade = capacidade;
			this.tempoMaximo = tempo_maximo;
			this.nome = nome;
		}

	}

	private void init() {
		panelMain = new HorizontalPanel();
		
		panelMain = new HorizontalPanel();
		panelMain.setSpacing(25);
		panelMain.setBorderWidth(1);

		panelLeft = new VerticalPanel();
		panelRight = new VerticalPanel();
		tbPesquisar = new TextBox();
		lazerList = new ArrayList<Lazer>();
		lazerList.add(new Lazer("5", "5","Casa"));
		
		tabela = new CellTable<Lazer>();
		tabela.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
		

		
		TextColumn<Lazer> nomeColumn = new TextColumn<Lazer>() {
			
			@Override
			public String getValue(Lazer object) {
				// TODO Auto-generated method stub
				return object.nome;
			}
		};
		tabela.addColumn(nomeColumn, "Nome");
		
		
		TextColumn<Lazer> capacidadeColumn = new TextColumn<Lazer>() {
			
			@Override
			public String getValue(Lazer object) {
				// TODO Auto-generated method stub
				return object.capacidade;
			}
		};
		tabela.addColumn(capacidadeColumn, "Capacidade");
		
		
		TextColumn<Lazer> tempoColumn = new TextColumn<Lazer>() {
			
			@Override
			public String getValue(Lazer object) {
				// TODO Auto-generated method stub
				return object.tempoMaximo;
			}
		};
		tabela.addColumn(tempoColumn, "Tempo Maximo(Horas)");
		

		tabela.setRowCount(lazerList.size(), true);
		tabela.setRowData(0, lazerList);
		
		selectionModel = new SingleSelectionModel<Lazer>();
		tabela.setSelectionModel(selectionModel);
		
		
		tbNome = new TextBox();
		tbCapacidade = new TextBox();
		tbTempo = new TextBox();
		btCancel = new Button("Cancelar");
		btCadastrar = new Button("Cadastrar");
		btExcluir = new Button("Excluir");
		pnBotoes = new HorizontalPanel();
		pnBotoes.setSpacing(5);
		pnBotoes.add(btCancel);
		pnBotoes.add(btCadastrar);
		pnBotoes.add(btExcluir);




		panelCadastroMorador = new VerticalPanel();
		panelCadastroMorador.setBorderWidth(1);
		panelCadastroMorador.setSpacing(5);
		panelCadastroMorador.add( lbNovaArea = new Label("Cadastro Nova Área de Lazer"));
		panelCadastroMorador.add(new Label("Nome"));
		panelCadastroMorador.add(tbNome);
		panelCadastroMorador.add(new Label("Capacidade"));
		panelCadastroMorador.add(tbCapacidade);
		panelCadastroMorador.add(new Label("Tempo Maximo em Horas"));
		panelCadastroMorador.add(tbTempo);
		panelCadastroMorador.add(pnBotoes);
		lbNovaArea.addStyleName("labelPointer");
		
		panelCadastroMorador.setVisible(true);

		panelLeft.setBorderWidth(1);
		panelLeft.setSpacing(5);
		panelLeft.add(new Label("Pesquisar "));
		panelLeft.add(tbPesquisar);
		panelLeft.add(new Label("Lista das Área de Lazer"));
		panelLeft.add(tabela);

		panelRight.add(panelCadastroMorador);

		panelMain.add(panelLeft);
		panelMain.add(panelRight);

		

	}
	@Override
	public void atualizaTabela() {
		tabela.setRowCount(lazerList.size(), true);
		tabela.setRowData(0, lazerList);
	}

	@Override
	public Button getBtSalvar() {
		
		return btCadastrar;
	}

	@Override
	public Label getLbNovaAreaLazer() {
			
		return lbNovaArea;
	}
	@Override
	public String[] getDados(){
		String[] dados = new String[] {tbNome.getValue(),tbCapacidade.getValue(),tbTempo.getValue()};
		
		return dados;
	}
	@Override
	public List<Lazer> getLazerList(){
		return lazerList;
	}
	
	@Override
	public void enabledOrDesenable(boolean formato){
		tbNome.setEnabled(formato);
		tbCapacidade.setEnabled(formato);
		tbTempo.setEnabled(formato);
	}
	@Override
	public SingleSelectionModel<Lazer> getSelectionModel() {
		
		return selectionModel;
	}
	@Override
	public TextBox getTbNome() {
		return tbNome;
	}
	@Override
	public TextBox getTbCapacidade() {
		return tbCapacidade;
	}
	@Override
	public TextBox getTbTempo() {
		return tbTempo;
	}
	@Override
	public void clean(){
		tbNome.setValue("");
		tbCapacidade.setValue("");
		tbTempo.setValue("");
	}

}
